S |
|
SegmentedAVISource / SegmentedDirectShowSource
SegmentedAVISource("base-filename"[,...])
SegmentedDirectShowSource("base-filename"[,...][,fps])
|
Метод SegmentedAVISource автоматически загрузит до 100 AVI
файлов (используя AVISource ) и склеит их вместе (используя
UnalignedSplice ). Если d:\filename.ext используется в
качестве аргумента, то будут загружены файлы d:\filename.00.ext,
d:\filename.01.ext и т.д. до d:\filename.99.ext. Несуществующие
файлы этой последовательности буду опущены.
|
|
SegmentedDirectShowSource работает аналогично.
|
|
|
SelectEven / SelectOdd
SelectEven(clip)
SelectOdd(clip)
|
SelectEven делает выходной видео-поток используя только кадры
входного видео-потока с чётными номерами. SelectOdd - его
нечётное дополнение.
|
|
Так как кадры нумеруются с нуля, SelectEven фактически выбирает
первый, третий, пятый, ... кадры по человеческому соглашению счёта.
|
|
|
SelectEvery
SelectEvery(clip,step-size[,offset1[,offset2[,...]]])
|
SelectEvery это обобщение таких фильтров, как
SelectEven и Pulldown . Проще всего
описать фильтр на примере:
|
SelectEvery(clip,2,0) # идентично SelectEven(clip)
SelectEvery(clip,2,1) # идентично SelectOdd(clip)
SelectEvery(clip,10,3,6,7) # выбрать кадры 3,6,7,13,16,17,23,26,27... из клипа источника
SelectEvery(clip,9) # выбрать кадры 0,9,18,27,... (второй аргумент предполагается равным 0)
|
|
Или вот так
|
# Взять прогрессивный клип 24FPS и применить "3:2 pulldown"
# получая на выходе чересстрочный клип 30FPS
AssumeFrameBased
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
|
|
|
SeparateFields
SeparateFields(clip)
|
NTSC и PAL видеосигналы это последовательности полей, но
все известные карты захвата видео захватывают два поля сразу и "interlace"
- чередуют (или "weave" - сплетают) их в кадры. Так кадр 0 в
захваченном файле содержит поля 0 и 1; кадр 1 содержит поля 2 и 3; и т.д.
SeparateFields берёт основанный на кадрах клип и разделяет каждый кадр
на составляющие его поля, формируя новый клип с удвоенной частотой и числом
кадров. Это полезно, если вы хотите использовать Trim и тому
подобные фильтры с точностью до одного поля.
|
|
SeparateFields использует информацию о порядке полей клипа
источника для решения которое из каждой пары полей выводится первым. Если
порядок неверен, используйте ComplementParity перед
SeparateFields . Если результат все равно неверен, возможно стоит
использовать также и AssumeFrameBased
|
|
Фильтр ничего не делает, если клип уже основан на полях.
|
|
|
Blur / Sharpen
Blur(clip,amount)
Sharpen(clip,amount)
|
Фильтр использует простую 3x3 размывающую или обостряющую матрицу весов
пикселов. Наибольший допустимый аргумент для Blur около 1.58,
который соответствует равномерному размытию 3x3 пикселя. Значение 1.0 даёт вам веса
пикселов (1/4, 1/2, 1/4). Если вам требуется Гауссовское размытие большего
радиуса, примените несколько копий Blur(1.0) последовательно.
|
|
Отрицательные значения для Blur на самом деле повышают резкость
изображения, и фактически Sharpen просто псевдоним для Blur(-
n) . Наименьшее допустимое значение для Blur - -1.0, и
наибольшее для Sharpen - 1.0
|
|
|
ShowFiveVersions
ShowFiveVersions(clip1,clip2,clip3,clip4,clip5)
|
ShowFiveVersions берёт пять видео-потоков и соединяет их
в зигзагообразном порядке слева на право. Единственное применение для этого -
помочь найти структуру NTSC "3:2 pulldown". Этого можно
добиться используя такой код:
|
# Наблюдать все пять структур 3:2 pulldown сразу
DoubleWeave()
# Встаете фильтр изменения размера если надо (см. ниже)
a = Pulldown(0,2).Subtitle("0,2")
b = Pulldown(1,3).Subtitle("1,3")
c = Pulldown(2,4).Subtitle("2,4")
d = Pulldown(0,3).Subtitle("0,3")
e = Pulldown(1,4).Subtitle("1,4")
ShowFiveVersions(a,b,c,d,e)
|
|
Этот код показывает пять структур "3:2 pulldown" с добавленным текстом
идентифицирующим каждую из них. Затем просматривая конечный фильм можно выбрать
структуру не содержащую смешанных кадров. (При обычном "3:2 pulldown"
должно быть две одинаково хороших. Посмотрите на диаграмму в описании для
фильтра Pulldown и поймёте почему.) Если ни одна из пяти не подходит,
то вы имеете дело с одной из более извращённых форм "3:2 pulldown" и
вам может понадобиться использовать PeculiarBlend .
|
|
Кстати, если вы планируете захватывать в высоком разрешении и затем
масштабировать к нужному размеру, как рекомендовалось, вы возможно должны
поместить ReduceBy2 или BilinearResize или что-нибудь
сразу после команды DoubleWeave в вышерасположенном коде,
до DoubleWeave это сработает неверно, а если отложите на будущее,
ShowFiveVersions сформирует по-настоящему большой кадр.
|
|
|
ShowFrameNumber
ShowFrameNumber(clip)
|
ShowFrameNumber отрисовывает текст на каждом кадре показывающий
каким AVISynth считает его номер. Фильтр иногда полезен при
написании скриптов. Если вы примените дополнительные фильтры после
ShowFrameNumber , будут рассматривать текст в кадре просто как часть
картинки, так что номер может быть искажён к тому времени, как вы его увидите.
|
|
|
ShowSMPTE
ShowSMPTE(clip,fps)
|
Фильтр ShowSMPTE аналогичен ShowFrameNumber ,
но показывает код времени SMPTE (часы:минуты:ссекунды:кадр).
Аргумент fps необходим и должен быть 24, 25, 30 или 29.97.
|
|
|
SpatialSoften / TemporalSoften
SpatialSoften(clip,radius,luma_threshold,chroma_threshold)
TemporalSoften(clip,radius,luma_threshold,chroma_threshold)
|
Фильтры SpatialSoften и TemporalSoften удаляют шум
из видео-клипа выборочно смешивая пиксели. Это фильтры могут творить чудеса, и
весьма рекомендуется попытаться использовать их. Но они
также могут стереть
мелкие детали если пороги слишком высоки, поэтому не перестарайтесь. И они
очень медленны, особенно с большими значениями радиуса, поэтому не
включайте их
до тех пор, пока всё остальное не будет готово.
|
|
SpatialSoften заменяет каждый пиксель в кадре средним всех
соседних выборок отличающихся от центральной выборки не более чем на указанное
пороговое значение. "Соседний" значит пиксель не далее чем на +/- radius
в направлениях X и Y. Пороги используются как luma_threshold для
Y (яркостной составляющей) выборок, и chroma_threshold для
U и V (цветовой составляющей) выборок.
|
|
TemporalSoften аналогичен, исключая то, что он просматривает
один и тот же пиксель в соседних кадрах. Используются все кадры не далее чем на
+/- radius отстоящие от центрального. Этот фильтр не выглядит
столь же эффективным, как SpatialSoften .
|
|
Рекомендуется "поиграть" с параметрами для этих фильтров, чтобы получить
представление о том, что они делают - к примеру попробуйте установить одному из
трёх параметров очень высокое значение, оставляя другие с низким, и смотрите
что выйдет. Помните, что установка любого из параметров в 0.0 станет причиной
очень медленного ничего-ни-делания.
|
|
В AVISynth, SpatialSoften и
TemporalSoften работают только в пространстве цвета YUY2.
Можно использовать ConvertToYUY2 фильтр если исходный видео-клип не
в YUY2 формате.
|
|
|
StackHorizontal / StackVertical
StackHorizontal(clip1,clip2[,...])
StackVertical(clip1,clip2[,...])
|
StackHorizontal берёт два видео-клипа и показывает их вместе
слева-на-право. Высоты изображений и их цветовые форматы должны совпадать.
Остальная информация (звуковая дорожка, частота кадров и т.д.) в основном
берётся из первого клипа. StackVertical делает тоже самое, но
сверху-вниз. Например:
|
|
Примеры |
# Сравнение кадров с и без подавления шума
StackVertical(last, last.SpatialSoften(2,3,6))
# Располагает клипы переменных a, b, c, d квадратом:
# a b
# c d
StackVertical(StackHorizontal(a,b),StackHorizontal(c,d))
|
|
|
Subtitle
Subtitle(clip,"text",x,y,first-frame,last-frame,"font-name",point-size[,text-color[,halo-color]])
Subtitle(clip,"text")
|
Фильтр Subtitle добавляет строку сглаженного текста в
последовательность кадров. Если вы желаете более одно субтитра, или
субтитр содержащий более одной строки, вы должны сцепить вместе несколько
фильтров Subtitle . Этот фильтр очевидно неприменим для
чего-то большего, чем случайное использование.
|
|
Цвет текста и ореола должны быть заданы как
шестнадцатеричное RGB
значение, как в HTML, не считая того, что начинается оно с $
вместо #. (# Используется для комментирования).
|
|
Альтернативная, краткая форма полезна когда вас не беспокоит, как
выглядят субтитры до тех пор, пока вы их видите. К примеру, когда вы
используете фильтр StackVertical , который покажет несколько
вариантов кадра сразу, и желаете пометить их, чтобы помнить что есть что.
|
|
AVISynth использует фильтр внутри для метода Version и
для вывода сообщений об ошибках. Ещё механизм субтитров используется в
ShowFrameNumber .
|
|
|
Subtract
Subtract(clip1,clip2)
|
Subtract формирует выходной клип в котором каждый пиксель
устанавливается в соответствии с разницей между соответствующими
пикселями в clip1 и clip2. Более точно, он устанавливается
(50% gray) + (clip1 pixel) - (clip2 pixel).
Вы можете использовать Levels после, если желаете повысить
контраст. К примеру:
|
# Сделать разницу между clip1 и clip2 явно очевидной
Subtract(clip1,clip2).Levels(127,1,129,0,255)
|
|
Если хотите в деталях увидеть разнице между смежными кадрами,
можете использовать код:
|
Subtract(clip.Trim(1,0),clip)
|
|
|
SwapFields
SwapFields(clip)
|
Фильтр SwapFields меняет местами строку 0 со строкой 1, строку 2 со строкой 3
и т.д., что эффективно меняет местами два поля в
чересстрочном кадре. Тоже самое
делает SeparateFields.ComplementParity.Weave (и именно
так фильтр реализован).
|
|
|
|